package db

import (
	"strings"
	"sync"

	"github.com/yinheli/qqwry"
)

var qClinet *qqwry.QQwry
var once sync.Once
var mutex sync.Mutex //定义一个锁的变量(互斥锁的关键字是Mutex，其是一个结构体，传参一定要传地址，否则就不对了)

//InitDB 初始化数据库
func InitQQWRY() {
	once.Do(func() {
		qClinet = openQQWRY()
	})
}

func GetAddrByIp(ip string) string {
	mutex.Lock() //对共享变量操作之前先加锁
	qClinet.Find(ip)
	addr := ""
	if qClinet.Country != "" {
		addr += qClinet.Country
	}
	if qClinet.City != "" && !strings.Contains(qClinet.City, "CZ88.NET") {
		addr += qClinet.City
	}
	mutex.Unlock() //对共享变量操作完毕在解锁，这样就保护了共享的资源
	return addr
}

//openDB 打开数据库
func openQQWRY() *qqwry.QQwry {
	// gconfig.Cnf
	q := qqwry.NewQQwry("qqwry.dat")
	return q
}
